<?
// Инициализация теста

function atest_mod_switch($level)
{   // Возврощает списко тестовых функций
    switch ($level)
    {
        case 'unit':
            // Функции модульного тестирования
            // (изолированный функционал)
            return array('atest_mod_switch_unit_makeurl');
        break;
        case 'func':
            // Функции функционального тестирования
            // Приемочнгое тестирование
            return array('atest_mod_switch_func_makeurl');
        break;

    }
}

// include mst_modpath($MT_mod_name,'lib/unit.php');
// include mst_modpath($MT_mod_name,'lib/func.php');
// echo microtime(true);

function atest_mod_switch_unit_makeurl()
{
	$ok = true;
	// Создаем объект управления URL
	$urltype='pathinfo';
	$urlvar='s';
	$baseurl = 'http://localhost/';
	$um = new switch_urlmaker(
					$urltype,
					$urlvar,
					$baseurl);
	// Создаем массив с данными для теста
	$ta	= array();
	// Тесты на основы генерации и на завершающие слеши
	$ta[]	= array('p'=>'',
					'url'=>'http://localhost/',
					$a = null);
	$ta[]	= array('p'=>'',
					'url'=>'http://localhost/',
					$a = null);
	$ta[]	= array('p'=>'test',
					'url'=>'http://localhost/test',
					$a = null);
	$ta[]	= array('p'=>'test/',
					'url'=>'http://localhost/test/',
					$a = null);
	$ta[]	= array('p'=>'test/test',
					'url'=>'http://localhost/test/test',
					$a = null);
	$ta[]	= array('p'=>'test/test/',
					'url'=>'http://localhost/test/test/',
					$a = null);
	// Обрабатываем тестовый массив			
	foreach ($ta as $tr)
	{
		// Извлекаем переменные
		extract($tr);
		if (($r = $um->url($p,$a)) !== $url)
		{
			// Результат не совпал с ожидаемой строкой
			echo "Ошибка:\n";
			echo "p = {$p}\n";
			echo "a =\n";
			print_r($a);
			echo "\nРезультат: {$r}";
			echo "\nОжидаемый результат: {$url}\n";
			$ok = false;
		}
	}
	return $ok;
}

function atest_mod_switch_func_makeurl()
{
	$ok = true;
	// Создаем объект управления URL
	$urltype='pathinfo';
	$urlvar='s';
	$baseurl = 'http://localhost/';
	$um = new switch_urlmaker(
					$urltype,
					$urlvar,
					$baseurl);

	// Создаем массив с данными для теста
	$ta	= array();
	// Тесты на правильность генерируемых URL
	// Генерация URL текущего нулевого уровня
	$ta[]	= array('path1'=>'', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	// Первый уровень
	$ta[]	= array('path1'=>'', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/', // Проверочный URL
					$a = null);
	// Второй уровень
	$ta[]	= array('path1'=>'', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/', // Проверочный URL
					$a = null);
	// Дополнительный уровень без слеша
	$ta[]	= array('path1'=>'aaa', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx', // Проверочный URL
					$a = null);
	// Дополнительный уровень со слешем
	$ta[]	= array('path1'=>'aaa', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx/', // Проверочный URL
					$a = null);
	// Ключевые слова - LEVEL
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'LEVEL/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'LEVEL/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'LEVEL/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'LEVEL/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'LEVEL/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'LEVEL/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'LEVEL', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/', // Проверочный URL
					'mark'=>'LEVEL-2-1-endslashes',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'LEVEL', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc', // Проверочный URL
					'mark'=>'LEVEL-2-1-nonendslashes',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>2,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'LEVEL/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>3,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'LEVEL', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/', // Проверочный URL
					'mark'=>'LEVEL-3-0-endslashes',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>3,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'LEVEL', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc', // Проверочный URL
					'mark'=>'LEVEL-3-0-nonendslashes',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>3,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'LEVEL/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/', // Проверочный URL
					'mark'=>'',
					$a = null);
	// Ключевые слова - PRELEVEL
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRELEVEL/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRELEVEL/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRELEVEL/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRELEVEL/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/xxx/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'PRELEVEL/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'PRELEVEL/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>2, // Текущее смещение
					'path2'=>'PRELEVEL/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>2, // Текущее смещение
					'path2'=>'PRELEVEL/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx/', // Проверочный URL
					$a = null);
	// Ключевые слова - PRETHIS
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'PRETHIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'PRETHIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'PRETHIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx/', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>2, // Текущее смещение
					'path2'=>'PRETHIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx', // Проверочный URL
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>2, // Текущее смещение
					'path2'=>'PRETHIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/xxx/', // Проверочный URL
					'mark'=>'',
					$a = null);
	// Ключевые слова THIS
	$ta[]	= array('path1'=>'', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/', // Проверочный URL
					'mark'=>'',
					$a = null);			
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc', // Проверочный URL
					'mark'=>'THIS-0-0-nonendslashes',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc', // Путь из url текущей страницы
					'disp'=>0,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>0, // Текущее смещение
					'path2'=>'THIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx/', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'THIS/xxx', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx', // Проверочный URL
					'mark'=>'',
					$a = null);
	$ta[]	= array('path1'=>'aaa/bbb/ccc/', // Путь из url текущей страницы
					'disp'=>1,  // Базовое смещение 
					'subdisp'=>1, // Текущее смещение
					'path2'=>'THIS/xxx/', // Желаемый путь
					'addvars'=>null, // Дополнительные переменные
					'url'=>'http://localhost/aaa/bbb/ccc/xxx/', // Проверочный URL
					'mark'=>'',
					$a = null);
										
	echo "Ошибки:\n";				
	// Обрабатываем тестовый массив			
	foreach ($ta as $i=>$tr)
	{
		// Извлекаем переменные
		extract($tr);
		// Создаем объект
		$bs = new switch_bswitcher(null,$um,$path1,$disp,$subdisp);
		$url_gen = $bs->url($path2,$addvars);
		
		// if (($r = $um->url($p,$a)) !== $url)
		if ($url_gen !== $url )
		{
			// Результат не совпал с ожидаемой строкой
			echo "\n";
			echo $i;
			echo "\t";
			echo $disp;
			echo "\t";
			echo $subdisp;
			echo "\t";
			echo $path1;
			echo "\t";
			echo $path2;
			echo "\t";
			echo $url_gen;
			echo "\t";
			echo $url;
			echo "\t";
			echo $mark;
			// echo "\nРезультат: {$url_gen}";
			// echo "\nОжидаемый результат: {$url}\n\n";
			$ok = false;
		}
		unset($bs);
	}
	return $ok;
}
?>